Computer programs, which are essentially sets of instructions that control the operation of a computer to perform tasks, have grown increasingly complex and powerful. While early computer programs were limited to performing only basic mathematical calculations, current computer programs handle complex tasks such as voice and image recognition, predictive analysis and forecasting, multimedia presentation, and other tasks that are too numerous to mention.
Software developers typically produce a software component in an iterative process from idea conception to prototyping, testing, performance analysis and through to production. The step in this process of analyzing and optimizing performance of a software component often relies on knowledge and skill outside the scope of a typical developer's everyday tasks. Computer systems have become so complex that the average software developer does not have the skills or time to perform this vital task in this stage of the development process.
A definite need exists for a system and method which delivers interactive, semi-automated, comprehensive and dynamic performance analysis tools that give individual developers or users the collected ‘tuning’ knowledge for a wide variety of software and hardware products that they would not normally have access to. As such, it would be beneficial to provide a model for performance tuning applications that satisfies these criteria.
Additionally, once a user receives a proposed remedy from a performance tuning model, the user may implement it and it the problem still may not be solved. It would be beneficial if the model had a mechanism such that the user would not have to repeat all the steps he had to go through during previous traversals through the model. For example, it would be beneficial if the user would not have to answer the same questions and/or provide the same information over again.